// src/lib/utils/shiki-global.ts
import { createHighlighter } from 'shiki';

// 定义支持的主题和语言（全局统一配置）
export type SupportedTheme = 'github-dark' | 'github-light';
export const ALL_THEMES: SupportedTheme[] = ['github-dark', 'github-light'];
export const COMMON_LANGUAGES = ['html', 'css', 'javascript', 'typescript', 'svelte', 'json']; // 预加载常用语言

// 全局 highlighter 实例
let highlighter: Awaited<ReturnType<typeof createHighlighter>> | null = null;

// 初始化全局实例（仅加载一次）
export async function initGlobalHighlighter() {
	if (highlighter) return highlighter; // 已初始化则直接返回

	highlighter = await createHighlighter({
		themes: ALL_THEMES,
		langs: COMMON_LANGUAGES
	});
	return highlighter;
}

// 获取全局实例（确保初始化完成）
export async function getGlobalHighlighter() {
	if (!highlighter) {
		await initGlobalHighlighter();
	}
	return highlighter as Awaited<ReturnType<typeof createHighlighter>>;
}
